# -*- coding:utf-8 -*-
# @Desc: 
# @Author: Administrator
# @DateTime: 2020/10/16 16:18


# import numpy as np
import numpy

### 改变数组的数据类型: 数组.astype(数据类型)
a1 = numpy.arange(12)  # [ 0  1  2  3  4  5  6  7  8  9 10 11]
a2 = a1.astype(float)  # [ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9. 10. 11.]
# print(a1, a2)


### 数组的拼接: 竖直与水平
t1 = numpy.arange(1,10).reshape(3,3)   # [[1 2 3][4 5 6][7 8 9]]
t2 = numpy.arange(11,20).reshape(3,3)  # [[11 12 13][14 15 16][17 18 19]]
## 竖直拼接
print(numpy.vstack((t1, t2)))
# [[ 1  2  3][ 4  5  6][ 7  8  9][11 12 13][14 15 16][17 18 19]]
## 水平拼接
print(numpy.hstack((t1, t2)))
# [[ 1  2  3 11 12 13][ 4  5  6 14 15 16][ 7  8  9 17 18 19]]

print("------------------------------------------------------------------------")

### 数组的行列交换:
tt1 = numpy.arange(12).reshape(3,4)   # [[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11]]
## 行交换; 如 交换数组的第2行与第3行数据
tt1[[1,2],:] = tt1[[2,1],:]
# print(tt1)  # [[ 0  1  2  3][ 8  9 10 11][ 4  5  6  7]]

## 列交换; 如 交换数组所有行的第1列与第3列数据
tt2 = numpy.arange(100,112).reshape(3,4)   # [[ 100  101  102  103][ 104  105  106  107][ 108  109 110 111]]
tt2[:,[0,2]] = tt2[:,[2,0]]
# print(tt2)  # [[102 101 100 103][106 105 104 107][110 109 108 111]]

print("------------------------------------------------------------------------")

### numpy.random模块: 随机数据的生成
## 打乱数组序列(类似洗牌): numpy.random.shuffle(数组名称)
## 生成随机整数数组: numpy.random.random_integers(最小值,最大值,个数)
print(numpy.random.random_integers(1, 3, 10))


## 创建d0-dn维度的均匀分布的随机数数组,浮点数,范围在0.0~1.0
# 注: 在相同的大小范围内的出现概率是等可能的
# 示例如: 生成指定维度大小(3行4列)的随机多维浮点型数据(二维),rand固定区间0.0 ~ 1.0
print(numpy.random.rand(3, 4))

## 创建d0-dn维度的标准正态分布的随机数数组,浮点数,平均数为0,标准差为1
# 注: 呈钟型，两头低，中间高，左右对称
print(numpy.random.randn(3, 4))

## 从给定的上下限范围选取随机数整数,范围是start(起始),end(结束);形状是shape
# 示例如: 生成指定维度大小(3行4列)的随机多维整型数据(二维),randint()可以指定区间(10, 20)
print(numpy.random.randint(10, 20, (3, 4)))  # 'size='可省略

## 产生具有均匀分布的数组,范围是start(起始),end(结束);形状是size
# 示例如: 生成指定维度大小(3行4列)的随机多维浮点型数据(二维),uniform()可以指定区间(10, 20)
print(numpy.random.uniform(10, 20, (3, 4)))  # 'size='可省略


